package tests;


import static org.junit.Assert.*;

import java.util.Calendar;

import metier.Film;
import metier.Personne;

import org.junit.Before;
import org.junit.Test;

import DAO.DAOFilm;
import DAO.DAOFilmJPA;
import DAO.DAOJPA;
import DAO.DAOPersonne;
import DAO.DAOPersonneJPA;


public class testDAOFilmPersonne {

	private DAOFilm dao;
	private Film film;

	@Before
	public void init() {
		film = new Film("titreFilm",2014,20);
		DAOJPA.viderBase();
		dao = DAOFilmJPA.getInstance();
		
	}
	
	@Test
	public void testFilm() {
		// Pr�conditions
		assertEquals(0,dao.getNombreFilms());	// rien dans la table
		
		Personne pers = new Personne("realisateur","prenom",Calendar.getInstance().getTime());
		Personne pers2 = new Personne("producteur","prenom2",Calendar.getInstance().getTime());
		DAOPersonne daoPersonne = DAOPersonneJPA.getInstance();
		daoPersonne.save(pers);
		daoPersonne.save(pers2);
		film.addActeur(pers);
		film.addActeur(pers2);
		film.addRealisateur(pers);
		film.addProducteur(pers2);
		
		dao.save(film);
		
		// Postconditions
		assertEquals(1,dao.getNombreFilms());	// Un article est dans la table
		assertNotEquals(-1, film.getId());	// Le code de l'auteur contient la cl� g�n�r�e par la BD
		
		// On v�rifie que l'auteur de la table est bien celui du test
		Film	film2 = dao.get(film.getId());	
		assertEquals(film, film2);			// C'est bien le m�me code
		System.out.println(film2);
		// On supprime l'objet que l'on vient de consulter
		dao.remove(film2);				
		
		assertEquals(0,dao.getNombreFilms());	// La table est bien vide
		
	}
	


}